 /**
 * 匠言知识付费v3.0.0
 * Author: 山西匠言网络科技有限公司
 * 这不是一个免费软件，它受限于许可条款，你可以访问https://www.zsfzxkc.cn/获取更多详细信息。
 * This is not a free software, it under the license terms, you can visit https://www.zsffzxkc.cn/ get more details.
 */
<script>
const innerAudioContext = uni.createInnerAudioContext();
export default {
	globalData: {
		dot_text: 0,
		new_msgList:[],
		issocketOpen:false
	},
	onLaunch: function(e) {
		if(e.query){
			// console.log(e.query)
			const scene = decodeURIComponent(e.query.scene)
			if(e.query.pid && e.query.pid!=''){
				uni.setStorageSync('pid',e.query.pid)
			}else if(scene && scene!=''){
				uni.setStorageSync('pid',scene)
			}
		}
		uni.HOST_URL = ''
		uni.H5_URL = ''
		uni.BASE_URL=''
		uni.WSS_URL = ''
		//小程序版本升级
		// #ifdef MP
		const updateManager = uni.getUpdateManager(); //本API返回全局唯一的版本更新管理器对象： updateManager，用于管理小程序更新。
		updateManager.onCheckForUpdate((res) => {//当向小程序后台请求完新版本信息，进行回调方法
			if (res.hasUpdate) {
				updateManager.onUpdateReady((res) => { //当新版本下载完成，会进行回调
					uni.showModal({
						title: '更新提示',
						content: '新版本已经准备好，是否重启应用？',
						success(res) {
							if (res.confirm) {
								// 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
								updateManager.applyUpdate();
							}
						}
					});
				});
				updateManager.onUpdateFailed((res) => {
					// 新的版本下载失败
					uni.showModal({
						title: '更新提示',
						content: '检查到有新版本，但下载失败，请检查网络设置',
						success(res) {
							if (res.confirm) {
								// 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
								updateManager.applyUpdate();
							}
						}
					});
				});
			}
		})
		// #endif
		// APP版本升级
		// #ifdef APP-PLUS
		// 获取本地应用资源版本号
		plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
			uni.local_v = wgtinfo.version;
		})
		// #endif
		const BASE_URL = uni.BASE_URL
		uni.request({
			url: BASE_URL+'index/set/base_set',
			method:'GET',
			success:(res) =>{
				console.log(res.data);
				if(res.data.data.title==''){
					res.data.data.title='匠言知识付费'
				}
				uni.base_set = res.data.data
				uni.setStorageSync('base_set',res.data.data)
				// #ifdef APP-PLUS
				if(res.data.data.app){
					let platform = uni.getSystemInfoSync().platform;
					if (platform == 'android'){
						var remote_v = res.data.data.app.Android_V;
						var local_v = uni.local_v;
						console.log(remote_v,local_v);
						if(compare(remote_v,local_v) == 1){
							uni.showModal({
								title: '温馨提示',
								confirmText:'立即更新',
								cancelText:'暂不更新',
								content: '有新版本V'+remote_v+'，现在更新吗',
								success: (res)=> {
									if (res.confirm) {
										uni.navigateTo({
											url:'/pages/set/set'
										})
									} else if (res.cancel) {
										console.log('用户点击取消');
									}
								}
							});
						}
					}
				}
				// #endif

			},
			fail:(res)=> {
				console.log(res.data);
			}
		});
		//比较app版本号
		function compare(v1, v2) {
			  v1 = v1.split('.')
			  v2 = v2.split('.')
			  const len = Math.max(v1.length, v2.length)

			 // 调整两个版本号位数相同
			  while (v1.length < len) {
				v1.push('0')
			  }
			  while (v2.length < len) {
				v2.push('0')
			  }
			  
			  // 循环判断每位数的大小
			  for (let i = 0; i < len; i++) {
				const num1 = parseInt(v1[i])
				const num2 = parseInt(v2[i])

				if (num1 > num2) {
				  return 1
				} else if (num1 < num2) {
				  return -1
				}
			  }
			  return 0
		};
		// #ifdef H5
		var set=uni.getStorageSync('base_set')
		var that=this
		var userinfo=uni.getStorageSync('userinfo')
		const HOST_URL=uni.HOST_URL
		
		if(userinfo && userinfo.uid){
			var link=uni.H5_URL+'?pid='+userinfo.uid
		}else{
			var link=uni.H5_URL
		}
		if (this.$jwx && this.$jwx.isWechat()) {
			this.$jwx.share({
				'title': set.share_title,
				'desc': set.share_desc,
				'link': link,
				'img_url': set.share_icon,
			})
			this.$jwx.sharepyq({
				'title': set.share_title,
				'link': link,
				'img_url': set.share_icon,
			})
		}
		// #endif
		// 学习时间 && 用户登录缓存时间逻辑
		const formatDate = (date, fmt) => {
		 date = new Date(date);
		 if (typeof (fmt) === "undefined") {
		  fmt = "yyyy-MM-dd HH:mm:ss";
		 }
		 if (/(y+)/.test(fmt)) {
		  fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
		 }
		 let o = {
		  'Y': date.getFullYear(),
		  'M+': date.getMonth() + 1,
		  'd+': date.getDate(),
		  'H+': date.getHours(),
		  'm+': date.getMinutes(),
		  's+': date.getSeconds()
		 }
		 for (let k in o) {
		  if (new RegExp(`(${k})`).test(fmt)) {
		   let str = o[k] + ''
		   fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? str : ('00' + str).substr(str.length));
		  }
		 }
		 return fmt
		}
		var date=formatDate(+new Date(), 'dd')
		var atime=uni.getStorageSync('atime')
		if(atime){
			var Adate=formatDate(atime.nowtime, 'dd')
			if(Adate!=date){
				uni.removeStorageSync('atime')
			}
		}
		var vtime=uni.getStorageSync('vtime')
		if(vtime){
			var Vdate=formatDate(vtime.nowtime, 'dd')
			if(Vdate!=date){
				uni.removeStorageSync('vtime')
			}
		}
		var tutime=uni.getStorageSync('tutime')
		if(tutime){
			var Tudate=formatDate(tutime.nowtime, 'dd')
			if(Tudate!=date){
				uni.removeStorageSync('tutime')
			}
		}
	},
	onShow: function() {
		console.log('程序猿(媛)您好，欢迎您加入匠言知识付费的生态系统！https://www.zsffzxkc.cn');
		// 创建websocket链接
		// #ifndef MP-TOUTIAO
		const WSS_URL = uni.WSS_URL
		uni.connectSocket({
			url: WSS_URL
		})
		uni.onSocketOpen(res => {
		  console.log('WebSocket连接已打开！');
		  uni.issocketOpen = true;
		  let data = {};
		  data.msg_type='sys_login';
		  uni.sendSocketMessage({
		  	data: JSON.stringify(data),
		  	success: res => {
		  		// console.log(res)
		  	}
		  })
		})
		uni.onSocketMessage(res => {
			console.log('收到服务器内容：' + res.data);
			let msgList = JSON.parse(res.data)
			if(msgList.msg_type !== 'ping') {
				let audio=innerAudioContext;
				audio.src = '/static/msg/msg.mp3';
				audio.autoplay = true;
				audio.play();
			}
			if(msgList.msg_type === 'ping') {
				uni.sendSocketMessage({
					data: '{"msg_type":"pong"}'
				})
			}else if(msgList.msg_type === 'guangbo'){
				this.globalData.dot_text +=1;
				this.globalData.new_msgList.push(msgList);
			}
		});
		uni.onSocketError(res => {
		  console.log('WebSocket连接打开失败，请检查！');
		});
		// #endif
		// #ifdef MP-TOUTIAO
		let socketTask;
		if (socketTask) {
		      return;
		    }
		const WSS_URL = uni.WSS_URL;
		socketTask = tt.connectSocket({
		  url: WSS_URL,
		  success: (res) => {
			// 创建成功的回调
			console.log("创建成功", res);
		  },
		  fail: (res) => {
			// 创建失败的回调
			console.log("创建失败", res);
		  }
		});
	
		socketTask.onOpen(() => {
		  // 此时表示 websocket 已经处于 open 状态
		  console.log("WebSocket 已连接");
		  uni.issocketOpen = true;
		  let data = {};
		  data.msg_type='sys_login';
		  socketTask.send({
		  	data: JSON.stringify(data),
		  	success: (res) => {
		  	  console.log("send success", res);
		  	}
		  });
		});
		socketTask.onClose(() => {
		  // 此时表示 websocket 已经处于 closed 状态
		  console.log("WebSocket 已断开");
		});
		socketTask.onError((error) => {
		  // 此处表示 websocket 有错误发生
		  console.error("WebSocket 发生错误:", error);
		});
		socketTask.onMessage((res) => {
		  // 每次 WebSocket 发送的信息
		  console.log('收到服务器内容：' + res.data);
		  let msgList = JSON.parse(res.data)
		  if(msgList.msg_type !== 'ping') {
		  	let audio=innerAudioContext;
		  	audio.src = '/static/msg/msg.mp3';
		  	audio.autoplay = true;
		  	audio.play();
		  }
		  if(msgList.msg_type === 'ping') {
			socketTask.send({
				data: '{"msg_type":"pong"}'
			});
		  }else if(msgList.msg_type === 'guangbo'){
		  	this.globalData.dot_text +=1;
		  	this.globalData.new_msgList.push(msgList);
		  }
		});
		// #endif
		// 建立WebSocket连接end
		var siteinfo = uni.getStorageSync('siteinfo');
		if(siteinfo.errno == 500 || !siteinfo){
			uni.request({
				url: uni.BASE_URL+'index/urlauth/index',
				method:'POST',
				data:{
					HOST_URL:uni.HOST_URL,
					H5_URL:uni.H5_URL,
					BASE_URL:uni.BASE_URL,
					WSS_URL:uni.WSS_URL
				},
				success:(res) =>{
					console.log(res.data.authkey);
					uni.setStorageSync('siteinfo',res.data);
				},
				fail:(res)=> {
					console.log(res.data);
				}
			});
		}
	},
	onHide: function() {
		console.log('程序猿(媛)您好，欢迎您加入匠言知识付费的生态系统！https://www.zsffzxkc.cn');
		// uni.closeSocket();
	}
};
</script>
<style lang="less">
/* 解决头条小程序组件内引入字体不生效的问题 */
body {
	background-color: #f6f6f6;
}

/* #ifdef H5 */
    uni-page-head {
        display: none;
    }
/* #endif */

</style>
